#define _CRT_SECURE_NO_WARNINGS

//#include<stdio.h>
//int main()
//{
//	int n;
//	int h = 0;
//	scanf("%d", &n);
//	int p[1010][1010] = { 0 };
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= n; j++)
//		{
//			scanf("%d", &p[i][j]);
//		}
//	}
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= n; j++)
//		{
//			if (p[i][j + 1] == 0 && p[i][j - 1] == 0 && p[i + 1][j] == 0 && p[i - 1][j] == 0)
//			{
//				h++;
//			}
//		}
//	}
//	printf("%d", h);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char p[110][110] = { 0 };
//	int r, c;
//	int num = 0;
//	scanf("%d %d", &r, &c);
//	for (int i = 0; i < r; i++)
//	{
//		for (int j = 0; j < c; j++)
//		{
//			scanf("%c ", &p[i][j]);
//		}
//	}
//	for (int i = 0; i < r; i++)
//	{
//		for (int j = 0; j < c; j++)
//		{
//			if (p[i][j] == '#')
//			{
//				num++;
//				break;
//			}
//		}
//	}
//	printf("%d", num);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char P[100][100];
//	int r, c;
//	char p[102][102];
//	int count = 0;
//	scanf("%d %d", &r, &c);
//	for (int i = 0; i < r; i++)
//	{
//		for (int j = 0; j < c; j++)
//		{
//			scanf("%c ", &P[i][j]);
//		}
//	}
//	for (int i = 0; i < 102; i++)
//	{
//		for (int j = 0; j < 102; j++)
//		{
//			p[i][j] = '?';
//		}
//	}
//	for (int i = 0; i < r; i++)
//	{
//		for (int j = 0; j < c; j++)
//		{
//			if (P[i][j] == '*')
//			{
//				p[i + 1][i + 1] = '*';
//			}
//		}
//	}
//	for (int i = 0; i < r; i++)
//	{
//		for (int j = 0; j < c; j++)
//		{
//			count = 0;
//			if (P[i][j] == '?')
//			{
//				if (p[i + 1][j + 1] == '*')
//				{
//					count++;
//				}
//				if (p[i + 1][j + 2] == '*')
//				{
//					count++;
//				}
//				if (p[i + 2][j + 1] == '*')
//				{
//					count++;
//				}
//				if (p[i + 1][j] == '*')
//				{
//					count++;
//				}if (p[i][j] == '*')
//				{
//					count++;
//				}
//				if (p[i + 2][j + 2] == '*')
//				{
//					count++;
//				}
//				if (p[i + 2][j+1] == '*')
//				{
//					count++;
//				}
//				if (p[i+1][j + 2] == '*')
//				{
//					count++;
//				}
//				switch (count)
//				{
//				case 0:P[i][j] = '0';
//				case 1:P[i][j] = '1';
//				case 2:P[i][j] = '2';
//				case 3:P[i][j] = '3';
//				case 4:P[i][j] = '4';
//				case 5:P[i][j] = '5';
//				case 6:P[i][j] = '6';
//				case 7:P[i][j] = '7';
//				case 8:P[i][j] = '8';
//				}
//			}
//		}
//	}
//	for (int i = 0; i < r; i++)
//	{
//		for (int j = 0; j < c; j++)
//		{
//			printf("%c", P[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int n, x, y;
//	scanf("%d %d %d", &n,&x,&y);
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j < n; j++)
//		{
//			int h = j;
//			int k = i;
//			while(i == x - 1&&h<n)
//			{
//				printf("(%d,%d) ", x,h+1);
//				h++;
//			}
//			if (h == n - 1)
//			{
//				printf("\n");
//			}
//			while (j == y - 1 && k < n)
//			{
//				printf("(%d,%d) ",k+1,y);
//				k++;
//			}
//			if (k == n - 1)
//			{
//				printf("\n");
//			}
//			if (i + j == (x + y - 2))
//			{
//				printf("(%d,%d) ", i + 1, j + 1);
//			}
//			if (j-i == (y-x))
//			{
//				printf("(%d,%d) ", i + 1, j + 1);
//			}
//		}
//
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int n, i, j;
//	scanf("%d %d %d", &n, &i, &j);
//	for (int p = 1; p <= n; p++)
//	{
//		printf("(%d,%d)", i, p);
//	}
//	printf("\n");
//	for (int p = 1; p <= n; p++)
//	{
//		printf("(%d,%d)",p,j);
//	}
//	printf("\n");
//	for (int p = 1; p <= n; p++)
//	{
//			if (j-i+p >0 && j-i+p <= n)
//			{
//				printf("(%d,%d)",p,j-i+p);
//			}
//	}
//	printf("\n");
//	for (int p = 1; p <= n; p++)
//	{
//		if (i + j - p > 0 && i + j - p <= n)
//		{
//			printf("(%d,%d)", p, i + j - p);
//		}
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char a[105][105] = {0};
//	int r, c;
//	scanf("%d %d", &r, &c);
//	int sum = 0;
//	int t = 0;
//	int p = 0;
//	int x[10] = { 0,-1,1,0,0,1,1,-1,-1,0 };
//	int y[10] = { 0,0,0,-1,1,1,-1,1,-1,0 };
//	for (int i = 1; i <= r; i++)
//	{
//		for (int j = 1; j <= c; j++)
//		{
//			a[i][j]=getchar();
//		}
//	}
//	for (int i = 1; i <= r; i++)
//	{
//		for (int j =1; j <= c; j++)
//		{
//			sum = 0;
//			if (a[i][j] == '*')
//			{
//				printf("*");
//			}
//			else
//			{
//				for (int k = 1; k < 9; k++)
//				{
//					t = i + x[k];
//					p = j + y[k];
//					if (t >= 1 && t <= r && p >= 1 && p <= c)
//					{
//						if (a[t][p] != '*')
//						{
//							sum++;
//						}
//					}
//				}
//				printf("%d", sum);
//			}
//		}
//		printf("\n");
//	}
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int a[100][100];
//	int b[100][100];
//	int c[100][100];
//	int m, n;
//	scanf("%d %d", &m, &n);
//	for (int i=0; i < m; i++)
//	{
//		for (int j=0; j < n; j++)
//		{
//			scanf("%d", &a[i][j]);
//		}
//	}
//	for (int i=0; i < m; i++)
//	{
//		for (int j=0; j < n; j++)
//		{
//			scanf("%d", &b[i][j]);
//		}
//	}
//	for (int i = 0; i < m; i++)
//	{
//		for (int j = 0; j < n; j++)
//		{
//			c[i][j] = a[i][j] + b[i][j];
//		}
//	}
//	for (int i = 0; i < m; i++)
//	{
//		for (int j = 0; j < n; j++)
//		{
//			printf("%d ", c[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a[500];
//	int flag = 0;
//	int m;
//	scanf("%d", &m);
//	for (int i = 0; i < m; i++)
//	{
//		scanf("%d", &a[i]);
//	}
//	for (int i = 0; i < m-1; i++)
//	{
//		for (int j =1; j < m-i-1; j++)
//		{
//			if (a[j] < a[j - 1])
//			{
//				int temp = a[j];
//				a[j] = a[j - 1];
//				a[j - 1] = temp;
//			}
//		}
//		
//	}
//	int i = 0;
//	for (i = 0; i < m; i++)
//	{
//		while (a[i] % 2 != 0)
//		{
//			printf("%d", a[i]);
//			flag = 1;
//			break;
//		}
//		if (flag == 1)
//		{
//			break;
//		}
//	}
//	for (i++; i < m; i++)
//	{
//		if (a[i] % 2 != 0)
//		{
//			printf(",");
//			printf("%d", a[i]);
//		}
//	}
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int a[500], b[500] = { 0 };
//	int k = 0;
//	int m;
//	int h = 0;
//	scanf("%d", &m);
//	for (int i = 0; i < m; i++)
//	{
//		scanf("%d", &k);
//		if (k % 2 != 0)
//		{
//			a[h] = k;
//			h++;
//		}
//	}
//	for (int i = 0; i <h-1; i++)
//	{
//		for (int j = 1; j < h-i ; j++)
//		{
//			if (a[j] < a[j - 1])
//			{
//				int temp = a[j];
//				a[j] = a[j - 1];
//				a[j - 1] = temp;
//			}
//		}
//
//	}
//	printf("%d", a[0]);
//	for (int j =1; j < h; j++)
//	{
//		printf(",%d", a[j]);
//	}
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int m, n, v;
//	int a[100][100], b[100][100], c[100][100] = {0};
//	scanf("%d %d %d", &m, &n, &v);
//	for (int i = 0; i < m; i++)
//	{
//		for (int j = 0; j <n; j++)
//		{
//			scanf("%d", &a[i][j]);
//		}
//	}
//	for (int i = 0; i <n; i++)
//	{
//		for (int j = 0; j <v; j++)
//		{
//			scanf("%d", &b[i][j]);
//		}
//	}
//	for (int i = 0; i <m; i++)
//	{
//		for (int j = 0; j < v; j++)
//		{
//			for (int h = 0; h < n; h++)
//			{
//				c[i][j] += a[i][h] * b[h][j];
//			}
//		}
//	}
//	for (int i = 0; i < m; i++)
//	{
//		for (int j = 0; j < v; j++)
//		{
//			printf("%d ", c[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	long long int a[110];
//	double b[110];
//	int n,k;
//	scanf("%d %d", &n,&k);
//	for (int i = 0; i < n; i++)
//	{
//		scanf("%lld %lf", &a[i],&b[i]);
//	}
//	for (int i = 0; i < n - 1; i++)
//	{
//		for (int j = 1; j < n  - i; j++)
//		{
//			if (b[j]-b[j - 1]<0)
//			{
//				double temp = b[j];
//				long long int o = a[j];
//				b[j] = b[j - 1];
//				b[j - 1] = temp;
//				a[j] = a[j - 1];
//				a[j - 1] = o;
//			}
//		}
//	}
//	printf("%lld %g", a[n-k], b[n-k]);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a[100][100];
//	int m, n;
//	scanf("%d %d", &m, &n);
//	for (int i = 0; i < m; i++)
//	{
//		for (int j = 0; j < n; j++)
//		{
//			scanf("%d", &a[i][j]);
//		}
//	}
//	for (int i = 0; i <n; i++)
//	{
//		for (int j = 0; j <m; j++)
//		{
//			printf("%d ",a[j][i]);
//		}
//		printf("\n");
//	}
//	return 0;
//}

#include<stdio.h>
#include<string.h>
char a[110], b[110], c[220];
int len1, len2;
int i = 0;
int j = 0;
char p;
void  bin(char a[],char b[])
{
	len1 = strlen(a);
	len2 = strlen(b);
	for (i; i < len1; i++)
	{
		c[i] = a[i];
	}
	for (i; i < len1+len2; i++)
	{
		c[i] =b[i-len1];
	}
	for (i = 0; i < len1 + len2-1; i++)
	{
		for (j = 1; j < len1 + len2; j++)
		{
			if (c[j] <= c[j - 1])
			{
				char p = c[j];
				c[j] = c[j - 1];
				c[j - 1] = p;
			}
		}
	}
	for (i = 0; i < len1 + len2; i++)
	{
		printf("%c", c[i]);
	}
}
int main()
{
	gets(a);
	gets(b);
	bin(a, b);
	return 0;
}